import axios, { AxiosInstance } from "axios";
// import qs from 'qs';
// 扩展 axios 接口
declare module "axios" {
  // prePath 标记前置路径，因为子系统不同，调用的方法前置路径也不同
  interface AxiosRequestConfig {
    prePath?: String;
  }
  interface CreateAxiosDefaults {
    prePath?: String;
  }
  interface InternalAxiosRequestConfig {
    prePath?: String;
  }
}

// 配置新建一个 axios 实例
const service: AxiosInstance = axios.create({
  baseURL: "https://restapi.amap.com",
  timeout: 50000,
  headers: { "Content-Type": "application/json" },
  // paramsSerializer: {
  // 	serialize(params) {
  // 		return qs.stringify(params, { allowDots: true });
  // 	},
  // },
});

// 添加请求拦截器
service.interceptors.request.use(
  (config) => {
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
service.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    const res = response.data;
    if (res.status && res.status != 1) {
      return Promise.reject(res);
    } else {
      return res;
    }
  },
  (error) => {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

// 导出 axios 实例
export default service;
